package leetcode.leetcode1;

import java.util.HashMap;

/**
 * @author czt
 * @version 1.0
 * @since 2025/1/6
 *
 * 两数之和
 */
public class Leetcode1 {

    /**
     * 思路:
     *  1.循环遍历数组，拿到每个数字x
     *  2.以target-x作为key到hash表中查找
     *      1)若没有找到，将x作为key，他的索引作为value放入hash表
     *      2)若找到了，返回x和他配对数的索引即可
     * @param nums 数组
     * @param target 查找的值
     * @return 索引
     */
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int x = nums[i];
            int y = target - x;
            if (map.containsKey(y)) {
                return new int[]{i, map.get(y)};
            } else {
                map.put(x, i);
            }
        }
        return new int[0];
    }
}
